// pages/list/list.js
let {
  globalData: {
    Api: {
      product: {
        list
      }
    }
  }
} = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    productList: [],
    name: "", //搜索词
    cid: 0, //分类
    orderCol: "price", //默认价格排序
    orderDir: "asc", //生序排序
    begin: 0, //默认开始
    pageSize: 6, //每次数据6个
    isLoading: false,
    hasMore: true,
    showCard: false,
    rocketHide: true,
    headerHeight: "",
    dealyTimer: null
  },
  // 通过名字搜索
  toSearch() {
    // if (this.data.name.trim() === "") {
    //   wx.showToast({
    //     title: '请输入搜索内容',
    //     icon: "none"
    //   })
    //   return;
    // }
    this.updateProductList();
  }, //实时根据搜索名字搜索
  delayToSearch(event) {
    // 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的 但值是可以修改的，一般不用于页面渲染---相当于定义了一个全局变量
    if (this.data.dealyTimer) clearTimeout(this.data.dealyTimer);
    this.data.dealyTimer = setTimeout(() => {
      this.toSearch();
    }, 800);
  },
  getOrderDir() {
    if (this.data.isLoading) {
      wx.showToast({
        title: '你操作太频繁',
        icon: "none"
      })
      return;
    }
    // 设置OrderDir
    this.setData({
      orderDir: this.data.orderDir === "asc" ? "desc" : "asc"
    })
    // 请求 列表数据
    this.updateProductList();
  },
  getOrderCol(event) {
    if (this.data.isLoading) {
      wx.showToast({
        title: '你操作太频繁',
        icon: "none"
      })
      return;
    }
    // 设置orderCol
    this.setData({
      orderCol: event.currentTarget.dataset.orderCol
    })
    // 请求 列表数据
    this.updateProductList();
  },
  async updateProductList(isLoadMored = false) {
    this.setData({
      isLoading: true
    })
    if (!isLoadMored) this.setData({
      productList: [],
      rocketHide: true
    })
    let lists = await list({
      name: this.data.name,
      cid: this.data.cid,
      orderCol: this.data.orderCol,
      orderDir: this.data.orderDir,
      begin: this.data.productList.length,
      pageSize: this.data.pageSize
    });
    this.setData({
      productList: !isLoadMored ? lists : [...this.data.productList, ...lists],
      isLoading: false,
      hasMore: lists.length === this.data.pageSize
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

    this.setData({
      cid: options.cid
    });
    // 请求 列表数据
    this.updateProductList();
    const query = wx.createSelectorQuery();
    query.select('#header').boundingClientRect();
    query.exec((res => {
      this.setData({
        headerHeight: res[0].height
      })
    }))
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if (this.data.hasMore && !this.data.isLoading) {
      this.updateProductList(true);
    }
  },
  goTop() {
    wx.pageScrollTo({
      scrollTop: 0,
      duration: 300
    });
  },
  onPageScroll: function (event) {
    if (event.scrollTop >= 100 && this.data.rocketHide) {
      this.setData({
        rocketHide: false
      })
    } else if (event.scrollTop <= 100 && !this.data.rocketHide) {
      this.setData({
        rocketHide: true
      })
    }
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})